const Koa = require('koa')

const path = require('path')

const koaStatic = require('koa-static')
const koaLogger = require('koa-logger') 
const koaBodyParser = require('koa-bodyparser')

const app = new Koa()

// 解决跨域问题 ↓
app.use(require('koa2-cors')({
  origin: function (ctx) {
      // if (ctx.url === '/test') {
          return "*"; // 允许来自所有域名请求
      // }
      // return "http://localhost:8080"; // 这样就能只允许 http://localhost:8080 这个域名的请求了
  },
  exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],
  maxAge: 5,
  credentials: true, // 当设置成允许请求携带cookie时，需要保证"Access-Control-Allow-Origin"是服务器有的域名，而不能是"*";
  allowMethods: ['GET', 'POST', 'DELETE'],
  allowHeaders: ['Content-Type', 'Authorization', 'Accept'],
}))

// 开放静态文件 ↓
app.use(koaStatic(path.join(__dirname, './public')))

// 获取post请求参数
app.use(koaBodyParser({
  enableTypes:['json', 'form', 'text']
}))

// 打印输出日志 ↓
app.use(koaLogger())

// 将数据库对象 ↓
app.context.db = require('./db')()

// 引入路由 ↓
app.use(
  require('./routers').routes(), 
  require('./routers').allowedMethods()
)

module.exports = app